/**
 * 
 */
package cz.cuni.mff.abacs.burglar.logics.objects.agents;


/**
 * Interface of the goal set entities.
 * 
 * @author abacs
 * 
 */
public interface GoalBase {

	
	/**
	 * Whether all the golas are satisfied in the agent's details.
	 */
	public boolean isSatisfied(BaseAgent agent);
	
	
	/**
	 * Copies the details of the other goal set.
	 * 
	 * @param other 
	 */
	public void copyChangeables(GoalBase other);
	
	
	// -------------------------------------------------------------------------
	
	
	/**
	 * Switches to primary goal, the agent has to use the given vending machine.
	 */
	public void setVenderIdToVisit(int venderToVisit);
	
	
	/**
	 * The agent no longer has to visit the machine.
	 */
	public void removeVenderToVisit();
	
	
	/**
	 * Checks whether the primary goal is active. 
	 */
	public boolean hasVenderToVisit();
	
	
	/**
	 * Returns the identifier of the vending machine agent has to visit.
	 * 
	 * @return -1, or the id of the vender.
	 */
	public int getVenderIdToVisit();
	
}
